Python (langage)
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
top
Python (prononcĂ© /pi.tÉÌ/) est un langage de programmation interprĂ©tĂ©, multiparadigme et multiplateformes. Il favorise la programmation impĂ©rative structurĂ©e, fonctionnelle et orientĂ©e objet. Il est dotĂ© d'un typage dynamique fort, d'une gestion automatique de la mĂ©moire par ramasse-miettes et d'un systĂšme de gestion d'exceptions ; il est ainsi similaire Ă Perl, Ruby, Scheme, Smalltalk et Tcl.
Le langage Python est placĂ© sous une licence libre proche de la licence BSD et fonctionne sur la plupart des plateformes informatiques, des smartphones aux ordinateurs centraux, de Windows Ă Unix avec notamment GNU/Linux en passant par macOS, ou encore Android, iOS, et peut aussi ĂȘtre traduit en Java ou .NET. Il est conçu pour optimiser la productivitĂ© des programmeurs en offrant des outils de haut niveau et une syntaxe simple Ă utiliser.
Contents
âą Utilisation
âą Historique
âą Au CWI
âą Au CNRI
âą Zope
âą Google
âą Dropbox
âą Microsoft
âą Syntaxe
⹠Réflexivité
âą Typage
âą ModĂšle objet
âą Distributions
⹠Développement
âą Les PEP
âą Python 3
âą Filmographie
âą Voir aussi
âą Bibliographie
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Utilisation
Python est un langage de programmation qui peut s'utiliser dans de nombreux contextes grùce à des bibliothÚques spécialisées.
Il est utilisé comme langage de script pour automatiser des tùches comme la récupération de la météo sur Internet ou l'enchaßnement d'actions en conception assistée par ordinateur (voir la section Adoption). On l'utilise également comme langage de développement de prototype lorsqu'on a besoin d'une application fonctionnelle avant de l'optimiser avec un langage compilé. Il est particuliÚrement répandu dans le monde scientifique, et possÚde des bibliothÚques optimisées pour le calcul numériquecite-ref-zdnet2021-07-26-7-0[7].
C'est l'un des langages utilisés dans le domaine du big datacite-ref-8[8], de l'informatique quantiquecite-ref-9[9] et de l'intelligence artificielle incluant l'apprentissage automatiquecite-ref-zdnet2021-07-26-7-1[7]cite-ref-lmi2020-11-13-10-0[10].
Python à l'école
Python est apprĂ©ciĂ© par les pĂ©dagogues qui y trouvent un langage oĂč la syntaxe, clairement sĂ©parĂ©e des mĂ©canismes de bas niveau, permet une initiation aisĂ©ecite-ref-11[11] aux concepts de base de la programmationcite-ref-downeyelknermeyers20165-introducing-programming-with-python-there-are-thirteen-paragraphs-12-0[12].
Cette initiation commence généralement au début du lycée en classe de seconde. Les élÚves souhaitant approfondir le sujet peuvent choisir un enseignement de spécialité Numérique et sciences informatiquescite-ref-tice2020-02-01-13-0[13] (NSI).
Les calculatrices supportant Pythoncite-ref-tice2020-02-01-13-1[13] destinées aux lycéens fonctionnent en Python 3. Ces calculatrices peuvent échanger des programmes avec des ordinateurs personnels.
Au LFI de Pékincite-ref-17[17], l'Heure de code est en langage graphique Scratch de puzzles colorés aimantés pour les collégiens ou en langage textuel Python pour les lycéens. Drew Houstoncite-ref-numerama2014-12-04-18-0[18] (Dropbox), Mark Zuckerbergcite-ref-numerama2014-12-04-18-1[18] (Meta), Bill Gatescite-ref-numerama2014-12-04-18-2[18] (Microsoft) et Barack Obamacite-ref-numerama2014-12-04-18-3[18] apportent leur soutient à Code.org (en), une organisation à but non lucratif à l'initiative de Hour of codecite-ref-19[19] et Hour of AI.
En janvier-février, Passe ton hackcite-ref-20[20] d'abord réunit 7 000 lycéens en ligne pour capturer le drapeau (en) en programmant en Pythoncite-ref-21[21] la détection d'une injection SQL, d'une attaque par force brute avec dictionnaire d'un mot de passe ou le décryptage d'un chiffrement par décalage de César.
Python est utilisé comme langage de programmation dans l'enseignement secondaire et supérieur, notamment en Francecite-ref-22[22]. Depuis 2013, il y est enseigné à tous les étudiants de classes préparatoires scientifiques dans le cadre du tronc commun (informatique commune). Auparavant, l'enseignement d'informatique était limité à une option en MP, l'enseignement se faisant en langage Caml ou Pascalcite-ref-infedu2024-23-0[23]. Cette option existe toujours, mais Pascal a été abandonné à partir de la session 2015 des concours et Caml a, lui, été enlevé au profit de OCaml dans cet enseignement. Les premiÚres épreuves de concours portant sur le langage Python sont également celles de la session 2015cite-ref-24[24]cite-ref-25[25].
Historique
Au CWI
En 1982cite-ref-inference2022-11-26-0[26], au Centre pour les mathématiques et l'informatique (CWI) d'Amsterdam, aux Pays-Bas, l'informaticien Guido van Rossum participe au développement du langage de programmation ABC conçu pour l'enseignementcite-ref-lemonde2025-09-17-27-0[27] :
PUT "ABC" IN B cible les débutants (Beginners) absoluscite-ref-inference2022-11-26-1[26].
Il travaille alors dans l'Ă©quipe du systĂšme d'exploitation Amoeba dont les appels systĂšmes sont difficilement interfaçables avec le Bourne shell utilisĂ© comme interface utilisateur. Il estime alors qu'un langage de script inspirĂ© d'ABCcite-ref-infedu2024-23-1[23] pourrait ĂȘtre intĂ©ressant comme interprĂ©teur de commandes pour Amoebacite-ref-faq1-2-28-0[28].
En 1989, profitant d'une semaine de vacances durant les fĂȘtes de NoĂ«l, il utilise son ordinateur personnelcite-ref-29[29] pour Ă©crire la premiĂšre version du langage. Fan de la sĂ©rie tĂ©lĂ©visĂ©e Monty Python's Flying Circus, il dĂ©cide de baptiser ce projet Pythoncite-ref-lutz200917-30-0[30]. Il s'est principalement inspirĂ© d'ABC, par exemple pour l'indentation comme syntaxe ou les types de haut niveau mais aussi de Modula-3 pour la gestion des exceptions, du langage C et des outils UNIXcite-ref-lutz2006xix-31-0[31].
Durant l'annĂ©e suivante, le langage commence Ă ĂȘtre adoptĂ© par l'Ă©quipe du projet Amoeba, Guido poursuivant son dĂ©veloppement principalement pendant son temps libre. Entre le 19cite-ref-alt1991-02-19-32-0[32] et le 20 fĂ©vrier 1991cite-ref-blogspot2009-01-1-1[1], la premiĂšre version publique, numĂ©rotĂ©e 0.9.0cite-ref-33[33], immĂ©diatement patchĂ©e en 0.9.1cite-ref-34[34]cite-ref-alt1991-02-19-32-1[32], est postĂ©e sur le forum Usenetcite-ref-faq1-2-28-1[28] alt.sources.
La derniĂšre version sortie au CWI est Python 1.2.
Au CNRI
Au CNRI, l'équipe Python travaille sur le navigateur web expérimental Grailcite-ref-cnri-grail-35-1[35] utilisant Tcl/Tk. Il est l'équivalent pour Python du navigateur HotJava, permettant d'exécuter des applets dans un environnement sécurisécite-ref-lutz2006714-36-0[36]. Il entraßne le développement de modules pour la bibliothÚque standard de gestion de HTML.
En 1999, le projet Computer Programming for Everybodycite-ref-python1999-07-idle-37-0[37] (CP4E) est lancé conjointement entre le CNRI et la DARPA. Il s'agit d'utiliser Python comme un langage d'enseignement de la programmation. Cette initiative conduira à la création de l'environnement de développement dénommé IDLE.
En décembre 1999, Andrew M. Kuchling, le manager pendant une décennie des versions de Python 2.0cite-ref-python2000-10-16new-38-0[38] à 2.7cite-ref-python2010new-39-0[39], publie une critique dénommée "Les bizarreries de Python" (Python Wartscite-ref-40[40]), qui synthétise les griefs les plus fréquents exprimés à l'encontre du langage. Ce document aura une influence certaine sur les développements futurs du langagecite-ref-41[41].
Du fait du manque de financement du projet par la DARPA, et du départ de nombreux développeurs Python du CNRI (dont Guido van Rossum), le projet IDLE s'éteint en 2000cite-ref-python1999-07-idle-37-1[37]. Python 1.6 est la derniÚre version sortie au CNRI.
Zope
En 2000, l'Ă©quipe principale de dĂ©veloppement de Python dĂ©mĂ©nage Ă BeOpen pour former l'Ă©quipe PythonLabs Ă lâorigine de Python 2.0. AprĂšs cette version, Guido van Rossum et les autres dĂ©veloppeurs de PythonLabs rejoignent Digital Creations Ă prĂ©sent connue sous le nom de Zope Corporationcite-ref-42[42].
La Python Software Foundation
En 2001, Python 2.1 est une version dérivée de Python 1.6.1 et de Python 2.0. Sa licence est renommée Python Software Foundation License. Tout code, documentation et spécification ajouté, depuis la sortie de Python 2.1 alpha, est détenu par la Python Software Foundation (PSF), une association sans but lucratif fondée en 2001, modelée d'aprÚs l'Apache Software Foundation.
Google
En 2005, Guido van Rossum travaille sur les projets Mondrian et Rietveldcite-ref-43[43].
En 2008, Python 3.0cite-ref-python2009-02-14new-44-0[44] est publié. L'équipe Python a choisi de casser la compatibilité ascendante dans cette nouvelle version majeure pour :
⹠Réparer certains défauts du langage : par exemple l'orienté objet avec deux types de classes) ;
⹠Nettoyer la bibliothÚque standard de ses éléments obsolÚtes et redondants.
En 2012, Python 3.1cite-ref-python2012-04-09new-45-0[45] corrige les erreurs de jeunesse de la version 3.0.
Dropbox
Microsoft
En 2020, Guido van Rossum entre dans la division développeur chez Microsoftcite-ref-lmi2020-11-13-10-1[10].
Selon l'Index TIOBE, « Python, qui est devenu un élément incontournable de la science des données, du DevOps et du développement web, est aussi désormais le langage le plus populaire dans le classement de TIOBE. Classé troisiÚme langage le plus populaire de l'index au début de l'année 2021, Python s'est hissé à la premiÚre place en octobre 2022 »cite-ref-49[49], notamment en raison de son efficacité pour l'apprentissage automatique.
En août 2025, Python occupe la premiÚre place de ce classementcite-ref-50[50].
Caractéristiques
Syntaxe
Python a Ă©tĂ© conçu pour ĂȘtre un langage lisible. Il vise Ă ĂȘtre visuellement Ă©purĂ©. Par exemple, il possĂšde moins de constructions syntaxiques que des langages structurĂ©s tels que C, Perl, ou Pascal. Les commentaires sont indiquĂ©s par le caractĂšre croisillon #cite-ref-swinnen201225-26-51-0[51].
Les blocs sont identifiés par l'indentationcite-ref-swinnen201223-26-52-0[52], au lieu d'accolades comme en C ou C++ ; ou de begin ... end comme en Pascal ou Ruby. Une augmentation de l'indentation marque le début d'un bloc, et une réduction de l'indentation marque la fin du bloc courant. Par convention, l'indentation est de quatre espaces en Python selon le standard de codage PEP 8cite-ref-pep8-53-0[53].
| Fonction factorielle en C | Fonction factorielle en Python |
|---|---|
| int factorielle ( int n ) { if ( n < 2⊠| def factorielle ( n ): if n < 2 : retur⊠|
Remarque : L'indentation pourrait ĂȘtre modifiĂ©e ou supprimĂ©e dans la version en C sans modifier son comportement. De mĂȘme, la fonction Python peut ĂȘtre Ă©crite avec une expression conditionnellecite-ref-pep-0308-54-0[54]. Cependant, une indentation correcte permet de dĂ©tecter plus aisĂ©ment des erreurs en cas d'imbrication de plusieurs blocs et facilite donc l'Ă©limination de ces erreurs. C'est pourquoi il est prĂ©fĂ©rable d'indenter convenablement les programmes en C. La version courte s'Ă©crirait ainsi :
| Fonction factorielle en C | Fonction factorielle en Python |
|---|---|
| int factorielle ( int n ) { // appel ré⊠| def factorielle ( n ): # appel récursif⊠|
Mots-clés du langage
Les mots-clés réservés du langage Python sont fournis dans la liste keyword.kwlist du module keywordcite-ref-55[55].
Les mots-clés de Python 2.7.5 sont les suivants : and, as, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while, with, yield.
à partir de Python 3.0, print et exec ne sont plus des mots-clés du langage, mais des fonctions du module builtinscite-ref-56[56]. Sont ajoutés aux mots-clés : True, False, None et nonlocal. Les trois premiers étaient déjà présents dans les versions précédentes, mais ils ne sont plus modifiables (auparavant, l'affectation True = 1 était possible)cite-ref-57[57]. nonlocal a été introduit par le PEP 3104cite-ref-58[58], et permet, dans une fonction définie à l'intérieur d'une autre fonction, de modifier une variable d'un niveau supérieur de portée. Avant cela, seules les variables locales à la fonction, et globales (niveau module) étaient modifiables. Toutefois, il était possible, et ça l'est toujours sans le mot-clé nonlocal, de modifier un objet affecté à une variable d'un niveau de portée supérieur, par exemple une liste avec la méthode append - c'est évidemment impossible pour un objet immuable.
Ă partir de Python 3.10, il y a 3 mots-clĂ©s contextuels (« soft keywords » en anglais) : match, case, _ identique Ă lâinstruction switch-case.
match valeur:
case condition_1:
expression_1
case condition_2:
expression_2
case _: # `case _Ž est accédé si toutes les autres conditions sont fausses.
expression_par_défaut
Types de base
Les types de base en Python sont relativement complets et puissants. Il y a, entre autres :
Les objets numériques :
⹠int est le type des entiers relatifs. Avant la version 3.0, ce type était dénommé long, et le type int correspondait à un entier de 32 ou 64 bits. Néanmoins, une conversion automatique en type long évitait tout débordement. Maintenant, ce type correspond aux entiers relatifs avec une précision illimitée sans restriction de taille.
⹠long est le type des entiers relatifs, illimités de plus de 32 bits en Python 2, remplacé par le type int en Python 3.
Les objets itérables sont parcourus à l'aide d'une boucle for de la maniÚre suivante :
for element in objet_iterable:
traiter(element)
1. bytearray est une chaĂźne d'octets modifiables. La version d'Unicode employĂ©e par Python peut ĂȘtre dĂ©terminĂ©e Ă l'aide de la variable unidata_version du module unicodedata.
2. dict est un dictionnaire ou tableau associatif pour associer chaque clef unique à un objet. Ses méthodes sont .keys(), .values() ou .items().
4. file correspond à un fichier obtenu grùce à la méthode with open('c:\tool\python\pep-343.html', 'r') as file:
5. frozenset forme une variante immuable d'un set.
6. list est un tableau dynamique qui étend automatiquement sa taille lorsque nécessaire et accepte des types de données hétérogÚnes.
7. range(nbr) est un compteur. Il génÚre une séquence de nombres de 0 à nbr - 1.
8. set est un ensemble non ordonné d'objets.
9. str est une chaßne de caractÚres itérable caractÚre par caractÚre. à partir de la version 3.0, les caractÚres sont en Unicode sur 16 ou 32 bits ; les chaßnes d'octets sont des objets bytescite-ref-60[60]cite-ref-pep-3137-61-0[61]. Dans les versions précédentes, ces objets étaient respectivement de type Unicode et str. Les objets str et bytes sont immuables.
10. tuple (n-uplet) est une liste immuable d'objets de types pouvant ĂȘtre diffĂ©rents c'est-Ă -dire hĂ©tĂ©rogĂšnes.
Les autres objets ne sont ni numériques ni itérables :
⹠bool est un booléen, soit le type de True et False renvoyés par exemple lors de comparaisons hors de l'utilisation de méthodes is_x().
⹠exception est le type d'un message d'erreur lancé lorsque le code lÚve une exception.
⹠function est le type d'une fonction, utilisé lors de l'appel des mots-clef def et lambda.
⹠module est le type d'un module, utilisé lors de l'appel des mots-clef import et from.
⹠None sert à dénoter qu'une variable est vide.
⹠NotImplementedType indique une absence d'implémentation du type auquel on essaie d'accéder.
⹠object est le type basique dont tous les autres types « héritent ».
âą slice est une partie de type ou un objet extensible.
⹠type est le type du type des objets, obtenu grùce à la méthode type().
Il est possible de dériver les classes des types de base pour créer ses propres types. On peut également fabriquer ses propres types d'objets itérables sans hériter des itérables de base en utilisant le protocole d'itération du langage.
Programmation fonctionnelle
Python permet de programmer dans un style fonctionnel. Il dispose également des compréhensions de listes, et plus généralement les compréhensions peuvent produire des générateurs, des dictionnaires ou des ensemblescite-ref-pep-0202-64-0[64]cite-ref-65[65]. Par exemple, pour construire la liste des carrés des entiers naturels plus petits que 10, on peut utiliser l'expression :
liste = [x**2 for x in range(10)]
# liste = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
La liste des nombres pairs :
liste = [entier for entier in range(10) if entier % 2 == 0]
# liste = [0, 2, 4, 6, 8]
Une table de passage des lettres de l'alphabet vers leur code ASCII :
{chr(n): n for n in range(65, 91)}
# {'A': 65, 'B': 66, 'C': 67, ..., 'X': 88, 'Y': 89, 'Z': 90}
L'ensemble des lettres d'un mot (produit l'ensemble {'r', 'c', 'd', 'b', 'a'}) :
s = "abracadabra"
{c for c in s}
Une comprĂ©hension peut comprendre plusieurs boucles et filtres, et il existe une correspondance avec le code rĂ©alisant le mĂȘme calcul Ă l'aide d'instructions for et if :
| Compréhension | Code équivalent |
|---|---|
| n = 6 [ i + j if i != j else 0 for i in⊠| n = 6 ; lstRes = [] # La liste résultat⊠|
Cependant, une différence notable dans la version sans compréhension est que les variables i et j existent, avec la valeur qu'elles avaient lors de leur dernier tour de boucle. Ce n'est pas le cas pour des constructions par compréhension.
Une forme limitée de fonction anonyme est possible :
lambda x: x + 2
Les fonctions lambda peuvent ĂȘtre dĂ©finies en ligne et utilisĂ©es comme arguments dans des expressions fonctionnelles :
list(filter(lambda x: x % 2 == 0, range(10)))
# renvoie [0, 2, 4, 6, 8]
retournera une liste constituée des nombres pairs inférieurs à 10.
Le mĂȘme rĂ©sultat peut ĂȘtre obtenu avec :
[x for x in range(10) if x % 2 == 0]
# renvoie [0, 2, 4, 6, 8]
Les lambdas de Python n'admettent que des expressions et ne peuvent ĂȘtre utilisĂ©es comme fonctions anonymes gĂ©nĂ©ralisĂ©es ; mais en Python, toutes les fonctions sont des objets, elles peuvent donc ĂȘtre passĂ©es en arguments Ă d'autres fonctions, et appelĂ©es lorsque c'est nĂ©cessaire. En effet, une fonction dĂ©finie avec def peut ĂȘtre créée Ă l'intĂ©rieur d'une autre fonction et on obtient ainsi une dĂ©finition de fonction dans une variable locale, par exemple :
def filtre_inferieur_a_5(une_liste):
def mon_filtre(x): # variable locale mon_filtre
return x < 5
return filter(mon_filtre, une_liste)
Une fonction locale peut modifier l'environnement de la fonction qui l'a créée, grùce au mot-clé nonlocal (voir Fermeture (informatique)) :
from typing import Callable # type le retour de fonction
def accum(pas) -> Callable[[int], int]: # retourne une fonction appelable
total = 0 # initialise une fois l'accumulateur
def ajoute(germe) -> int:
nonlocal total # accĂšde Ă l'accumulateur de la fonction accum
total += germe * pas # incrémente l'accumulateur du germe fois le pas
return total # retourne la valeur accumulée
return ajoute # retourne la fonction accumulateur paramétrée par le pas
paire = accum(2) # retourne la fonction ajoute avec un pas de 2
assert isinstance(paire, Callable) # paire est une fonction appelable
print([cell.cell_contents for cell in paire.__closure__]) # environnement initial : [2, 0]
print ([paire(1) for _ in range(5)]) # affiche la liste des cinq premiers nombres pairs
# [2, 4, 6, 8, 10]
print ([paire(1) for _ in range(3)]) # affiche la suite à partir du dernier compteur précédent
# [12, 14, 16]
print([cell.cell_contents for cell in paire.__closure__]) # environnement final : [2, 16]
On peut ainsi créer plusieurs accumulateurs, faisant chacun référence à son propre total. Il est possible d'accéder à l'environnement d'une fonction locale à l'aide de l'attribut __closure__.
Programmation objet
Une classe se définit avec le mot-clé class. Les classes Python supportent l'héritage multiple ; il n'y a pas de surcharge statique comme en C++, ou de restrictions sur l'héritage comme c'est le cas en Java (une classe implémente plusieurs interfaces et hérite d'une seule classe) mais le mécanisme des arguments optionnels et par mot-clé est plus général et plus flexible. En Python, l'attribut d'un objet peut référencer une variable d'instance ou de classe (le plus souvent une méthode). Il est possible de lire ou de modifier un attribut dynamiquement avec les fonctions :
âą getattr(objet, "nom_attribut")
âą setattr(objet, "nom_attribut", nouvel_attribut)
Exemple de deux classes simples :
class Personne:
def __init__(self, nom, prenom):
self.nom = nom
self.prenom = prenom
def presenter(self):
return self.nom + " " + self.prenom
class Etudiant(Personne):
def __init__(self, niveau, nom, prenom):
Personne.__init__(self, nom, prenom)
self.niveau = niveau
def presenter(self):
return self.niveau + " " + Personne.presenter(self)
e = Etudiant("Licence INFO", "Dupontel", "Albert")
assert e.nom == "Dupontel"
Méthodes spéciales et définition des opérateurs
Python fournit un mécanisme élégant et orienté objet pour définir un ensemble prédéfini d'opérateurs : tout objet Python peut se voir doté de méthodes dites spéciales.
Ces méthodes, commençant et finissant par deux tirets de soulignement (underscores), sont appelées lors de l'utilisation d'un opérateur sur l'objet : + (méthode __add__), += (méthode __iadd__), [] (méthode __getitem__), () (méthode __call__), etc. Des méthodes comme __repr__ et __str__ permettent de définir la représentation d'un objet dans l'interpréteur interactif et son rendu avec la fonction print.
Les possibilités sont nombreuses et sont décrites dans la documentation du langagecite-ref-66[66].
Par exemple on peut définir l'addition de deux vecteurs à deux dimensions avec la classe suivante :
class Vector2D:
def __init__(self, x, y):
# On utilise un tuple pour stocker les coordonnées
self.coords = (x, y)
def __add__(self, other):
# L'instruction a+b sera résolue comme a.__add__(b)
# On construit un objet Vector2D à partir des coordonnées propres à l'objet, et à l'autre opérande
return Vector2D(self.coords[0]+other.coords[0], self.coords[1]+other.coords[1])
def __repr__(self):
# L'affichage de l'objet dans l'interpréteur
return "Vector2D(%s, %s)" %self.coords
a = Vector2D(1, 2)
b = Vector2D(3, 4)
print(a + b) # Vector2D(4, 6)
Générateurs
Le mot-clef yield utilisĂ© dans une fonction permet de faire de cette fonction un gĂ©nĂ©rateur. L'appel de cette fonction renvoie un objet de type generator, qui peut ĂȘtre utilisĂ© dans une boucle for, par exemple.
à chaque appel, le générateur effectue son traitement jusqu'à rencontrer le mot-clé yield, renvoie la valeur de l'expression yield, et à l'appel suivant, reprend son déroulement juste aprÚs le yield. Par exemple pour calculer la suite de Fibonacci, on peut écrire :
def gen_fibonacci():
"""Générateur de la suite de Fibonacci"""
a, b = 0, 1
while True:
yield a # Renvoie la valeur de "a", résultat de l'itération en cours
a, b = b, a + b
fi = gen_fibonacci()
print([next(fi) for _ in range(7)])
# renvoie [0, 1, 1, 2, 3, 5, 8]
print([next(fi) for _ in range(3)])
# renvoie [13, 21, 34]
Le module itertools permet de manipuler les générateurs. Par exemple, pour extraire les 10 premiers éléments du générateur précédent :
import itertools
list(itertools.islice(gen_fibonacci(), 10))
# renvoie [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
Depuis Python 3.3, il est possible de produire un générateur à partir d'une fonction récursive, grùce à la syntaxe yield from, apparue dans le PEP 380cite-ref-pep-0380-67-0[67] et qui « délÚgue » le calcul à un sous-générateur. L'exemple suivant calcule les permutations des dames correspondant aux solutions du problÚme des huit dames étendu à un échiquier de taille n à n.
| Fonction d'affichage | N° |
|---|---|
| # ChessCoord([8, 4, 1, 3, 6, 2, 7, 5])⊠| 1 2 3 4 89 90 91 92 |
| Fonction d'affichage | Solution |
|---|---|
| # ChessCoord([8, 4, 1, 3, 6, 2, 7, 5])⊠| a8, e7, h6, f5, c4, g3, b2, d1 a8, f7,⊠|
Un générateur peut sembler identique à une fonction qui retourne une liste par return, mais contrairement à une liste qui contient tous ses éléments, un générateur calcule ses éléments un par un.
import timeit # chronomĂštre
[n * n for n in range(10)] # une liste est entre crochets
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
36 in [n * n for n in range(10)] # 36 est-il dans la liste des carrés ?
# True
(n * n for n in range(10)) # un générateur est entre parenthÚses
# <generator object <genexpr> at 0x0000022DCAED1490> # l'adresse hexadécimale peut changer
36 in (n * n for n in range(10)) # 36 est-il dans un des premiers résultats du générateur ?
# True
timeit.timeit(stmt='36 in [n * n for n in range(100)]', number=1_000_000) # quand range(maxNbr) augmente,
# 7.3 s
timeit.timeit(stmt='36 in (n * n for n in range(100))', number=1_000_000) # le gĂ©nĂ©rateur peut ĂȘtre plus rapide.
# 1.2 s
Ainsi, le test 36 in [n * n for n in range(10)] va s'effectuer sur la liste calculĂ©e en entier, alors que dans 36 in (n * n for n in range(10)), qui utilise un gĂ©nĂ©rateur, le calcul des carrĂ©s s'arrĂȘte dĂšs que 36 est trouvĂ©. On peut s'en convaincre en remplaçant n * n par un appel de fonction rĂ©alisant un effet de bord, par exemple un affichage Ă l'Ă©cran.
Réflexivité
Grùce à un usage intensif des dictionnaires (conteneur associatif développé avec des tables de hachage), Python permet d'explorer les divers objets du langage (introspection) et dans certains cas de les modifier (intercession).
Typage
Python est fortement typé. Il interdit à l'exécution des opérations ayant peu de sens. Par exemple : concaténer par l'opérateur + un nombre réel ou entier à une chaßne str pour l'afficher avec print().
Il n'y a pas de conversion automatique. Python propose les fonctions int() et str() permettant de convertir un nombre dans un autre type :
floatPoint = 3.2 # Python découvre dynamiquement que floatPoint est du type float
print("Tu as " + floatPoint + " points !") # GénÚre l'erreur de typage :
# TypeError: can only concatenate str (not "float") to str
# intPoint est du type int : entier. La fonction int() force la conversion.
intPoint = int(floatPoint) # Sa valeur 3 est arrondie à l'unité inférieure.
print("Tu as " + intPoint + " points !")
# TypeError: can only concatenate str (not "int") to str
strPoint = str(intPoint) # strPoint est du type str : chaßne de caractÚres
print("Tu as " + strPoint + " points !") # affiche "Tu as 3 points !"'
En pratique, il n'est pas utile de préfixer les noms de variables par leur type. La conversion d'un nombre vers str est automatique avec une chaßne préfixée par f en mettant la variable entre accolades à l'intérieur de la chaßne sans opérateur + :
nbrPoint = 3.2 # Python reconnaĂźt dynamiquement que nbrPoint est du type float
print(f"Tu as {nbrPoint} points.") # affiche "Tu as 3.2 points."
print(f"Tu as {int(nbrPoint)} points.") # affiche "Tu as 3 points."
print(f"Tu as {nbrPoint:.0f} points.") # affiche "Tu as 3 points." avec zero décimale
Python utilise le typage dynamique dĂ©nommĂ© duck typing : lors de l'exĂ©cution, si une mĂ©thode invoquĂ©e sur un objet a la mĂȘme signature qu'une mĂ©thode dĂ©clarĂ©e sur cet objet, alors c'est cette derniĂšre mĂ©thode qui est exĂ©cutĂ©e. De ce fait, invoquer une mĂ©thode qui n'existe pas sur un objet va Ă©chouer, signifiant que l'objet en question n'est pas du bon type.
Python propose aussi un mécanisme de typage statique pour les attributs des classes grùce à l'API traitcite-ref-72[72] ou au patron de conception decorators.
Annotations
def hello(name: str) -> str:
return "Hello {}Â !".format(name)
hello("Alice") # Appel suggéré par les annotations
hello(True) # Appel non conforme mais tout Ă fait fonctionnel
from typing import List
def split_string(string: str) -> List[str]:
return string.split(" ")
Analyse statique
Il est possible d'effectuer une analyse statique des modules Python avec des outils comme Pylancecite-ref-77[77], Pylintcite-ref-cnrs2023-10-18-78-0[78], mypycite-ref-mypy-47-1[47], ou PyChecker. Sans nĂ©cessiter une exĂ©cution, ces outils repĂšrent des fautes ou des constructions dĂ©conseillĂ©es. Par exemple, une classe qui hĂ©rite d'une classe abstraite et qui ne redĂ©finit pas les mĂ©thodes abstraites, ou bien des variables utilisĂ©es avant d'ĂȘtre dĂ©clarĂ©es, ou encore des attributs d'instance dĂ©clarĂ©s en dehors de la mĂ©thode __init__.
Déassembleur
Il est aussi possible de générer un code intermédiaire (bytecode) Python :
import dis # module déassembleur
dis.dis("val = 0; val += 1")
Le résultat du bytecode est :
[Running] python -u "c:\Tool\python\inc.py"
0 RESUME 0
1 LOAD_CONST 0 (0)
STORE_NAME 0 (val)
LOAD_NAME 0 (val)
LOAD_CONST 1 (1)
BINARY_OP 13 (+=)
STORE_NAME 0 (val)
RETURN_CONST 2 (None)
[Done] exited with code=0 in 1.645 seconds
Compilateur
⹠L'inconvénient est le poids de l'exécutable. Le programme ne tourne pas plus rapidement car il n'est pas compilé sous forme de code machine.
âą L'avantage est que tout est compris dans l'exĂ©cutable : cela simplifie sa distribution, notamment sur une autre machine oĂč Python n'est pas installĂ©.
ModĂšle objet
En Python, tout est objetcite-ref-dive2011-80-0[80], dans le sens qu'une variable peut contenir une référence vers tous les éléments manipulés par le langage : nombres, méthodes, modules, etc.. Néanmoins, avant la version 2.2, les classes et les instances de classes étaient un type d'objet particulier, ce qui signifiait qu'il était par exemple impossible de dériver sa propre sous-classe de l'objet list.
Méthodes
Le modĂšle objet de Python est inspirĂ© de celui de Modula-3cite-ref-lutz2006xix-31-1[31]. Parmi ces emprunts se trouve l'obligation de dĂ©clarer l'instance de l'objet courant, conventionnellement nommĂ©e self, comme premier argument des mĂ©thodes, et Ă chaque fois que l'on souhaite accĂ©der Ă une donnĂ©e de cette instance dans le corps de cette mĂ©thode. Cette pratique n'est pas naturelle pour des programmeurs venant par exemple de C++ ou Java, la profusion des self Ă©tant souvent critiquĂ©e comme Ă©tant une pollution visuelle qui gĂȘne la lecture du code. Les promoteurs du self explicite estiment au contraire qu'il Ă©vite le recours Ă des conventions de nommage pour les donnĂ©es membres et qu'il simplifie des tĂąches comme l'appel Ă une mĂ©thode de la superclasse ou la rĂ©solution d'homonymie entre donnĂ©es membrescite-ref-81[81].
Python reconnaßt trois types de méthodes :
âą les mĂ©thodes d'instance, qui sont celles dĂ©finies par dĂ©faut. Elles reçoivent comme premier argument une instance de la classe oĂč elles ont Ă©tĂ© dĂ©finies.
âą les mĂ©thodes de classe, qui reçoivent comme premier argument la classe oĂč elles ont Ă©tĂ© dĂ©finies. Elles peuvent ĂȘtre appelĂ©es depuis une instance ou directement depuis la classe. Elles permettent de dĂ©finir des constructeurs alternatifs comme la mĂ©thode fromkeys() de l'objet dict. Elles sont dĂ©clarĂ©es avec le dĂ©corateur @classmethod.
⹠les méthodes statiques, qui ne reçoivent pas de premier argument implicite. Elles sont déclarées avec le décorateur @staticmethod.
Visibilité
Le langage a un support trÚs limité de l'encapsulation. Il n'y a pas, comme en Java par exemple, de contrÎle de l'accessibilité par des mots clefs comme protected ou private.
La philosophie de Python est de différencier conceptuellement l'encapsulation du masquage d'information. Le masquage d'information vise à prévenir les utilisations frauduleuses, c'est une préoccupation de sécurité informatique. Le module bastion de la bibliothÚque standard, qui n'est plus maintenu dans les derniÚres versions du langage, permettait ainsi de contrÎler l'accÚs aux attributs d'un objet dans le cadre d'un environnement d'exécution restreint.
L'encapsulation est une problĂ©matique de dĂ©veloppement logiciel. Le slogan des dĂ©veloppeurs Python est we're all consenting adults herecite-ref-zeste2016-10-21-82-0[82] (nous sommes entre adultes consentants). Ils estiment en effet qu'il suffit d'indiquer, par des conventions d'Ă©criture, les parties publiques des interfaces et que c'est aux utilisateurs des objets de se conformer Ă ces conventions ou de prendre leurs responsabilitĂ©s. L'usage est de prĂ©fixer par un underscore les membres privĂ©s. Le langage permet par ailleurs d'utiliser un double underscore pour Ă©viter les collisions de noms, en prĂ©fixant automatiquement le nom de la donnĂ©e par celui de la classe oĂč elle est dĂ©finie.
L'utilisation de la fonction property() permet de définir des propriétés qui ont pour but d'intercepter, à l'aide de méthodes, les accÚs à une donnée membre. Cela rend inutile la définition systématique d'accesseurs et le masquage des données comme il est courant de le faire en C++ par exemple.
Héritage
Python supporte l'héritage multiple. Depuis la version 2.3, il utilise l'algorithme C3, issu du langage Dylancite-ref-83[83], pour résoudre l'ordre de résolution de méthode (MRO). Les versions précédentes utilisaient un algorithme de parcours en profondeur qui posait des problÚmes dans le cas d'un héritage en diamantcite-ref-84[84].
BibliothĂšque standard
Python possĂšde une grande bibliothĂšque standard, fournissant des outils convenant Ă de nombreuses tĂąches diverses. Le nombre de modules de la bibliothĂšque standard peut ĂȘtre augmentĂ© avec des modules spĂ©cifiques Ă©crits en C ou en Python.
La bibliothÚque standard est particuliÚrement bien conçue pour écrire des applications utilisant Internet, avec un grand nombre de formats et de protocoles standards gérés (tels que MIME et HTTP). Des modules pour créer des interfaces graphiques et manipuler des expressions rationnelles sont également fournis. Python inclut également un framework de tests unitaires (unittest, anciennement PyUnit avant version 2.1) pour créer des suites de tests exhaustives.
Conventions de style
Bien que chaque programmeur puisse adopter ses propres conventions pour l'écriture de code Python, Guido van Rossum a mis un guide à disposition, référencé comme PEP 8cite-ref-pep8-53-1[53]cite-ref-cnrs2023-10-18-78-1[78]. Publié en 2001, il est toujours maintenu pour l'adapter aux évolutions du langage. Google propose également un guidecite-ref-google-pyguide-85-0[85].
Interfaces graphiques
Python possĂšde plusieurs modules disponibles pour la crĂ©ation de logiciels avec une interface graphique. Le plus rĂ©pandu est Tkintercite-ref-swinnen201279-105-86-0[86]. Ce module convient Ă beaucoup d'applications et peut ĂȘtre considĂ©rĂ© comme suffisant dans la plupart des cas. NĂ©anmoins, d'autres modules ont Ă©tĂ© créés pour pouvoir lier Python Ă d'autres bibliothĂšques logicielles (« toolkit »), pour davantage de fonctionnalitĂ©s, pour une meilleure intĂ©gration avec le systĂšme d'exploitation utilisĂ©, ou simplement pour pouvoir utiliser Python avec sa bibliothĂšque prĂ©fĂ©rĂ©e. En effet, certains programmeurs trouvent l'utilisation de Tkinter plus pĂ©nible que d'autres bibliothĂšques. Ces autres modules ne font pas partie de la bibliothĂšque standard et doivent donc ĂȘtre obtenus sĂ©parĂ©ment.
Les principaux modules donnant accÚs aux bibliothÚques d'interface graphique sont Tkinter et Pmwcite-ref-87[87] (Python megawidgets) pour Tk, wxPython pour wxWidgets, PyGTK pour GTK, PyQt et PySide pour Qt, et enfin FxPy pour le FOX Toolkit. Il existe aussi une adaptation de la bibliothÚque SDL : Pygame, un binding de la SFML : PySFML, ainsi qu'une bibliothÚque écrite spécialement pour Python : Pyglet.
Il est aussi possible de créer des applications Silverlight en Python sur la plateforme IronPython.
La communauté Python
Guido van Rossum est le principal auteur de Python, un langage de programmation largement utilisé dans divers domaines, allant du développement web à l'intelligence artificielle. Son rÎle central dans l'évolution de Python lui a valu le titre humoristique de « Dictateur bienveillant à vie » (Benevolent Dictator for Life, BDFLcite-ref-medium2018-11-13-88-0[88]) « par intérimcite-ref-lemonde2025-09-17-27-1[27] ». Cependant, en juillet 2018, Guido van Rossum a annoncé sa retraite de ce rÎle, se déclarant en « vacances permanentes » de ses responsabilités de BDFLcite-ref-89[89]. Par la suite, en novembre 2019, il a également retiré sa candidature au conseil directeur du langage Pythoncite-ref-90[90].
AprĂšs le retrait de van Rossum, la gouvernance de Python est passĂ©e Ă un modĂšle plus dĂ©mocratique, sous la direction d'un Conseil directeur composĂ© de cinq membres Ă©lus. Ces membres sont principalement issus de la communautĂ© des core developers, une Ă©quipe de dĂ©veloppeurs ayant un accĂšs en Ă©criture au dĂ©pĂŽt de CPython, l'implĂ©mentation de rĂ©fĂ©rence du langage Python. Cette Ă©quipe se coordonne principalement via la liste de diffusion python-dev, oĂč sont discutĂ©es et dĂ©cidĂ©es les Ă©volutions du langage et de sa bibliothĂšque standard.
Les contributions de la communauté sont encouragées, et les développeurs tiers peuvent soumettre des améliorations via la plateforme de gestion de bugs et de suivi de tùches Roundup, qui a remplacé l'ancien systÚme basé sur SourceForge. La transition vers GitHub en 2017 a également facilité la collaboration ouverte et la contribution au code source de Python.
Les rĂ©fĂ©rences aux Monty Pythoncite-ref-lutz200917-30-1[30], une troupe comique britannique, sont un Ă©lĂ©ment rĂ©current dans la culture Pythoncite-ref-91[91]. Illustrant l'humour dĂ©calĂ©cite-ref-92[92] et omniprĂ©sent dans la communautĂ© Python, la documentation du langage utilise souvent les termes spam et eggs comme espace rĂ©servĂ©, en rĂ©fĂ©rence au cĂ©lĂšbre sketch Spam des Monty Python, oĂč le SPAM (un jambon en conserve) est le leitmotiv du menu truffĂ© d'expressions en français. Ce sketch a d'ailleurs donnĂ© son nom au phĂ©nomĂšne du courriel non sollicitĂ©cite-ref-93[93].
Les résultats peuvent différer par rapport à la documentation officielle de Pythoncite-ref-94[94] :
Command-line example
Here are some examples of the random command-line interface:
PS C:\Tool\python> # Choose one at random
PS C:\Tool\python> python -m random egg bacon sausage spam "Lobster Thermidor aux crevettes with a Mornay sauce"
spam
PS C:\Tool\python> python -m random egg bacon sausage spam "Lobster Thermidor aux crevettes with a Mornay sauce"
egg
PS C:\Tool\python> # With explicit arguments
PS C:\Tool\python> python -m random --choice egg bacon sausage spam "Lobster Thermidor aux crevettes with a Mornay sauce"
Lobster Thermidor aux crevettes with a Mornay sauce
Adoption de Python
Plusieurs entreprises ou organismes mentionnent sur leur site officielcite-ref-95[95] qu'elles utilisent Python :
⹠Google utilise Python comme langage principal parmi les langages dynamiquescite-ref-google-pyguide-85-1[85]. Guido van Rossum a travaillé au sein de cette entreprise entre 2005 et 2012cite-ref-96[96] ;
âą Industrial Light & Magic ;
⹠et CCP Games, les créateurs du jeu vidéo EVE Online.
Python est aussi le langage de commande d'un grand nombre de logiciels libres :
âą Inkscape, logiciel de dessin vectoriel
⹠LibreOffice et Apache OpenOffice, les deux branches de développement d'une suite bureautique issue de StarOffice
âą Portage (en), le gestionnaire de paquets du systĂšme d'exploitation Gentoo
⹠ParaView, logiciel de visualisation de données numériques
⹠Kodi, un lecteur multimédia
âą QGIS, un logiciel de cartographie
âą Weblate, un outil de traduction
⹠gedit, un éditeur de texte (les plugins sont écrits en Python)
âą SageMath, un logiciel de calcul formel
Et commerciaux :
⹠Wing IDE, environnement de développement intégré spécialisé sur Python, et écrit en Python
⹠Corel Paint Shop Pro, logiciel de traitement d'image et d'édition graphique
âą capella, logiciel de notation musicale
Implémentations du langage
âą Stackless Python, une version de CPython n'utilisant pas la pile d'appel du langage C ;
⹠Jython, un interprÚte Python pour machine virtuelle Java. Il a accÚs aux bibliothÚques fournies avec l'environnement de développement Java ;
⹠Brythoncite-ref-102[102], une implémentation de Python 3 pour les navigateurs web ;
⹠MicroPython, variante légÚre pour microcontrÎleurs ;
⹠Unladen Swallow (en)cite-ref-104[104], une version de CPython optimisée et basée sur LLVM archivée en octobre 2009 ;
⹠PySpark est une interface de programmation permettant d'utiliser Spark à partir du langage Python pour faire des calculs distribués.
Ces autres versions ne bénéficient pas forcément de la totalité de la bibliothÚque de fonctions écrites en C pour la version de référence, ni des derniÚres évolutions du langage.
Distributions
Différentes distributions sont disponibles, qui incluent des paquets dédiés à un domaine donné :
âą ActivePythoncite-ref-dive2011-80-1[80] : disponible en version gratuite (ne pouvant ĂȘtre « utilisĂ©e en production ») ou commerciale.
âą Enthought (en) Canopy : distribution commerciale Ă usage scientifique, disponible en version gratuite sous le nom de Canopy Expresscite-ref-108[108].
⹠Intel Distribution for Python : distribution installable par conda ou pip, intégrant la bibliothÚque oneMKL du noyau mathématique Python (en) d'Intel afin d'accélérer les calculs numériquescite-ref-nasa024-06-21-98-1[98] de NumPy et SciPy. Elle est disponible gratuitement seule, ou bien intégrée à Intel Parallel Studio, qui nécessite une licence payante.
âą Pyzo : distribution scientifique destinĂ©e Ă ĂȘtre facile d'utilisationcite-ref-cordeaupointal2025xiv-6-110-0[110].
Ce ne sont pas des implĂ©mentations diffĂ©rentes du langage Python : elles sont basĂ©es sur la rĂ©fĂ©rence CPython, mais sont livrĂ©es avec plus ou moins de bibliothĂšques prĂ©installĂ©es. Ces modules tierscite-ref-lmi2020-11-13-10-3[10] peuvent ĂȘtre en versions diffĂ©rentes d'une distribution Ă l'autre, introduire des contraintes de dĂ©pendance ou avoir des cycles de dĂ©veloppement propres qui peuvent ne pas ĂȘtre synchronisĂ©s avec la derniĂšre version officielle.
Développement
Les PEP
Les propositions d'amĂ©lioration de Python (ou PEP : Python Enhancement Proposal) sont des documents textuels qui ont pour objet d'ĂȘtre la voie d'amĂ©lioration de Python et de prĂ©cĂ©der toutes ses modificationscite-ref-112[112]. Un PEP est une proposition d'orientation pour le dĂ©veloppement (process PEP), une proposition technique (Standard Track PEP) ou une simple recommandation (Informational PEP). La PEP la plus connue est la PEP 8cite-ref-pep8-53-2[53] pour son guide sur le style de code.
Historique des versions
L'historique présente un extrait des nouveautés majeures du logiciel Python par version avec la date de début de sortie et celle de fin de support. Les mises à jour de sécurité sont assurées jusqu'à la date entre parenthÚses.
Chaque nouveauté correspond à une proposition d'amélioration de Python (PEP) acceptée dont le numéro apparaßt en derniÚre colonne. Ce tableau n'est pas exhaustif. Se reporter, en premiÚre colonne, à chaque version pour l'ensemble des liens des PEP avec leurs auteurs.
| Version | Début | Fin |
|---|---|---|
| Ancienne version, plus prise en charge⊠| 3 janv. 1998 | 13 avr. 1999 |
| Ancienne version, plus prise en charge⊠| 5 sept. 2000 | sept. 2000 |
| Ancienne version, plus prise en charge⊠| 16 oct. 2000 | 22 juin 2001 |
| Ancienne version, plus prise en charge⊠| 15 avr. 2001 | 9 avr. 2002 |
| Ancienne version, plus prise en charge⊠| 21 déc. 2001 | 30 mai 2003 |
| Ancienne version, plus prise en charge⊠| 29 juin 2003 | 11 mars 2008 |
| Ancienne version, plus prise en charge⊠| 30 nov. 2004 | 19 déc. 2008 |
| Ancienne version, plus prise en charge⊠| 19 sept. 2006 | 26 mai 2011 |
| Ancienne version, plus prise en charge⊠| 1 er oct. 2008 | 24 août 2010 ( 29 oct. 2013 ) |
| Ancienne version, plus prise en charge⊠| 3 juill. 2010 | 1 er janv. 2020 |
| Ancienne version, plus prise en charge⊠| 3 déc. 2008 | 27 juin 2009 |
| Ancienne version, plus prise en charge⊠| 27 juin 2009 | 12 juin 2011 ( juin 2012 ) |
| Ancienne version, plus prise en charge⊠| 20 fév. 2011 | 13 mai 2013 ( 20 fév. 2016 ) |
| Ancienne version, plus prise en charge⊠| 29 sept. 2012 | 8 mars 2014 ( 29 sept. 2017 ) |
| Ancienne version, plus prise en charge⊠| 16 mars 2014 | 9 août 2017 ( 18 mars 2019 ) |
| Ancienne version, plus prise en charge⊠| 13 sept. 2015 | 8 août 2017 ( 13 sept. 2020 ) |
| Ancienne version, plus prise en charge⊠| 23 déc. 2016 | 24 déc. 2018 ( déc. 2021 ) |
| Ancienne version, plus prise en charge⊠| 31 janv. 2018 | 27 juin 2020 ( juin 2023 ) |
| Ancienne version, plus prise en charge⊠| 14 oct. 2019 | avr. 2021 ( oct. 2024 ) |
| Ancienne version, plus prise en charge⊠| 5 oct. 2020 | mai 2022 ( oct. 2025 ) |
| Ancienne version, toujours prise en cha⊠| 4 oct. 2021 | 3 avr. 2023 ( oct. 2026 ) |
| Ancienne version, toujours prise en cha⊠| 24 oct. 2022 | oct. 2027 |
| Ancienne version, toujours prise en cha⊠| 2 oct. 2023 | oct. 2028 |
| Ancienne version, toujours prise en cha⊠| 1 er oct. 2024 | oct. 2029 |
| DerniĂšre version stable: 3.14 | 7 oct. 2025 | oct. 2030 |
| Version future: 3.15 | 1 er oct. 2026 | oct. 2031 |
| Version | Nouveautés majeures |
|---|---|
| Ancienne version, plus prise en charge⊠| Ajout du mot clé assert import spam.ham⊠|
| Ancienne version, plus prise en charge⊠| ma_list.append('accepte un seul argumen⊠|
| Ancienne version, plus prise en charge⊠| Changement majeur : support d'Unicode C⊠|
| Ancienne version, plus prise en charge⊠| Ajout des références faibles ( weak ref⊠|
| Ancienne version, plus prise en charge⊠| Ajout des itérateurs et générateurs a /⊠|
| Ancienne version, plus prise en charge⊠| Support d' Unicode Ajout des fonctions⊠|
| Ancienne version, plus prise en charge⊠| Conversion automatique int en long @cla⊠|
| Ancienne version, plus prise en charge⊠| Sans : dans valIfTrue if condition else⊠|
| Ancienne version, plus prise en charge⊠| Préparation de la migration avec Python⊠|
| Ancienne version, plus prise en charge⊠| Dictionnaire ordonné : from collections⊠|
| Ancienne version, plus prise en charge⊠| a/b est la vraie division par défaut Fu⊠|
| Ancienne version, plus prise en charge⊠| Ajout d'un type de dictionnaire ordonné⊠|
| Ancienne version, plus prise en charge⊠| Le module argparse analyse les argument⊠|
| Ancienne version, plus prise en charge⊠| yield from dans for venv incorpore des⊠|
| Ancienne version, plus prise en charge⊠| Asynchrone programmation avec le module⊠|
| Ancienne version, plus prise en charge⊠| MatrixA @ MatrixB multiplie deux matric⊠|
| Ancienne version, plus prise en charge⊠| Formattage des f "chaßnes de caractÚres⊠|
| Ancienne version, plus prise en charge⊠| breakpoint insĂšre un point d'arrĂȘt. Le⊠|
| Ancienne version, plus prise en charge⊠| Opérateur morse := : if (lenInput := le⊠|
| Ancienne version, plus prise en charge⊠| union de dictionnaires typing.List simp⊠|
| Ancienne version, toujours prise en cha⊠| Ăcriture des unions de types sous la fo⊠|
| Ancienne version, toujours prise en cha⊠| TypeVarTuple pour fonction générique Ge⊠|
| Ancienne version, toujours prise en cha⊠| Performance de CPython pour debuggers e⊠|
| Ancienne version, toujours prise en cha⊠| Interpréteur interactif en mode free-th⊠|
| DerniÚre version stable: 3.14 | ModÚle de chaßne t "... { variable ! ty⊠|
| Version future: 3.15 | profilage maintenant la performance |
| Version | PEP |
|---|---|
| Ancienne version, plus prise en charge⊠| 100 202 203 |
| Ancienne version, plus prise en charge⊠| 205 207 230 236 |
| Ancienne version, plus prise en charge⊠| 234 238 252 |
| Ancienne version, plus prise en charge⊠| 277 279 285 |
| Ancienne version, plus prise en charge⊠| 237 318 322 327 |
| Ancienne version, plus prise en charge⊠| 308 328 342 343 |
| Ancienne version, plus prise en charge⊠| 3xxx 371 3101 3119 3129 |
| Ancienne version, plus prise en charge⊠| 372 378 389 3137 |
| Ancienne version, plus prise en charge⊠| 0237 0238 3100 3105 3120 |
| Ancienne version, plus prise en charge⊠| 372 378 3116 |
| Ancienne version, plus prise en charge⊠| 389 3147 3333 |
| Ancienne version, plus prise en charge⊠| 380 405 3151 |
| Ancienne version, plus prise en charge⊠| 3156 |
| Ancienne version, plus prise en charge⊠| 465 484 492 |
| Ancienne version, plus prise en charge⊠| 498 506 515 |
| Ancienne version, plus prise en charge⊠| 553 567 |
| Ancienne version, plus prise en charge⊠| 572 |
| Ancienne version, plus prise en charge⊠| 584 585 602 615 616 |
| Ancienne version, toujours prise en cha⊠| 604 612 613 618 626 634 635 636 |
| Ancienne version, toujours prise en cha⊠| 646 654 655 675 678 |
| Ancienne version, toujours prise en cha⊠| 669 684 692 701 |
| Ancienne version, toujours prise en cha⊠| 703 744 |
| DerniĂšre version stable: 3.14 | 734 749 750 758 765 779 |
| Version future: 3.15 | 790 |
Légende :
Ancienne version
Ancienne version, toujours prise en charge
DerniĂšre version stable
DerniÚre version avancée
Version future
Python 3
En 2009, c'est la version 3 de Python, qui remplace de plus en plus la version 2 (le projet était au départ appelé « Python 3000 » ou « Py3K »), sans compatibilité descendante avec la série des versions 2.x, dans le but d'éliminer les faiblesses du langage. La ligne de conduite du projet était de « réduire la redondance de Python par la suppression de méthodes obsolÚtes ». Python 3.0a1, la premiÚre version alpha, avait été publiée le 31 août 2007cite-ref-144[144]. Le PEP 3000cite-ref-pep-3000-145-0[145] détaille les changements prévus. Les programmeurs en Python 2 sont incités à migrer vers la version 3cite-ref-146[146].
Philosophie
Python 3 a Ă©tĂ© dĂ©veloppĂ© avec la mĂȘme philosophie que dans ses versions antĂ©rieures, donc toute rĂ©fĂ©rence Ă la philosophie de Python s'appliquera aussi bien Ă la version 3. Cependant, le langage avait fini par accumuler nombre de mĂ©thodes redondantes. En recherchant Ă supprimer ce qui est redondant dans le langage et ses modules, Python 3 suit la ligne directrice de Python « Ne devrait subsister qu'une seule mĂ©thode Ă la fois optimale et naturelle pour chaque chose ».
Python 3 reste un langage multiparadigme. Les programmeurs auront encore le choix entre l'orientation objet, la programmation structurĂ©e, la programmation fonctionnelle et d'autres paradigmes ; Python 3 a pour but d'ĂȘtre utilisĂ© de maniĂšre plus naturelle que dans les versions 2.x, bien que son print nĂ©cessite l'emploi de parenthĂšses contrairement Ă Python 2.
Planning et compatibilité
Python 3.0a1, la premiÚre version alpha de Python 3.0, fut publiée le 31 août 2007. Les versions 2.x et 3.x de Python seront publiées en parallÚle pendant plusieurs cycles de développement, pendant lesquels la série des 2.x subsistera principalement pour la compatibilité, en incluant quelques caractéristiques importées depuis Python 3.x. Le PEP 3000cite-ref-pep-3000-145-1[145] contient plus d'informations à propos du processus de publication d'une version.
Comme Perl 6, Python 3.0 rompt la compatibilité descendante (rétrocompatibilité). L'utilisation de code écrit pour les séries 2.x n'est pas garantie avec Python 3.0. Ce dernier apporte des changements fondamentaux, comme le passage complet à l'Unicode et pour cette raison une nécessaire distinction entre les chaßnes de caractÚre et les objets « bytes ». Le typage dynamique associé à certaines méthodes sur les objets de type dictionnaire rend une transition parfaite de Python 2.x vers Python 3.0 trÚs délicate. Un outil nommé 2to3 traduit le plus gros des versions 2.x vers les versions 3.x et indique les zones de code demandant des finitions par des commentaires spéciaux et des mises en garde. Dans sa préversion, 2to3 semble réussir franchement à réaliser une traduction correctecite-ref-147[147]. Dans le cadre d'une migration de Python 2.x vers Python 3.x, le PEP 3000 recommande de conserver le code original comme base des modifications et de le traduire pour la plateforme 3.x en utilisant 2to3.
Python 2.6 fournit un début de compatibilité ascendante, aussi bien qu'un mode « mise en garde » qui devrait faire prendre conscience des problÚmes potentiels de transition pour le passage à Python 3cite-ref-148[148].
Python pour smartphones
Scripting Layer for Android (en) (SL4A) n'est plus supporté :
import android # possibilité de faire des petites interfaces graphiques
# telephone local
droid = android.Android() # client lié au serveur local lancé par l'application SL4A
droid.vibrate(3) # fait vibrer le téléphone pendant trois secondes
result = droid.smsSend(phoneNbr, "SMS") # envoyer un SMS
droid.cameraInteractiveCapturePicture("/sdcard/picture.jpg") # allumer la caméra
# téléphone distant à l'adresse 192.168.0.5, avec SL4A lancé sur le port 9887
# android.Android('192.168.0.5', 9887)
Un portage de Python 3.2 sur les terminaux Blackberry est sorti en juin 2012, pour le systĂšme BlackBerry OS 10cite-ref-151[151].
Filmographie
Python : Le documentaire
âą Python: The Documentary, 2025, CultRepocite-ref-152[152]
Le film est produit par Cult.Repocite-ref-realpython2025-09-20-155-0[155] à Berlin en relation avec la société irlandaise Open Source World Films Limited : Emma Tracey est créditée au générique.
Pendant une annĂ©ecite-ref-stack2025-08-25-153-1[153], le tournage se dĂ©roule aux Pays-bas, Ătats-Unis, Canada et en Australie.
Parole de femme
âą Jessica McKellar (en) est directricecite-ref-159[159] de la fondation Python de 2012 Ă 2014;
⹠Lisa Guocite-ref-stack2017-06-14-97-1[97] est interviewée sur la migration de Python chez Instagram ;
⹠Lisa Roachcite-ref-160[160] relate comment elle a résolu la migration de Python 2 vers la version 3 dans les applications de Meta. Elle est l'autrice du PEP 526. C'est une oratrice réguliÚrement invitée aux conférences sur Python.
Pythonista, Pythoneer et fondateur
âą Barry Warsaw (CNRI, NIST, GNU Mailman, Microsoftcite-ref-zdnet2021-05-14-162-0[162], PSF, PEP 1, PEP 8000cite-ref-medium2018-11-13-88-1[88]) ;
⹠Au CWI, Stephen Pemberton et Lambert Meertenscite-ref-inference2022-11-26-2[26] resituent l'abécédairecite-ref-infedu2024-23-2[23] du langage précurseur de Python avec leur collÚgue Sjoered Mullender ;
âą L'avocate Patrice Ann Lyons et Robert Elliot Kahn se rappellent de l'embauche de Guido van Rossum au CNRI ;
âą Drew Houston (DropBox) ; Benjamin Peterson (DropBox, PEP 387, PEP 552, Python 2.7 manager) ;
âą Armin Ronacher (en) (Flask, PEP 372, PEP 414) ;
âą Robin Friedrichcite-ref-zdnet2002-07-04-99-1[99] Ă la NASA ;
âą Tim O'Reilly (O'Reilly Media) ;
âą Ton Roosendaal (Blender) ;
⹠Tim Peters (en) (PEP 20cite-ref-164[164], PEP 572cite-ref-pep572-131-1[131], PEP 8001), évangelistecite-ref-inference2022-11-26-3[26] (advocative) Python de la premiÚre heure, est crédité pour l'import du module dénommé this :
import this # Affiche :
« The Zen of Python, by Tim Peterscite-ref-zeste2016-10-21-82-1[82] ». Il a donné les documents originaux sur Python à la réalisatrice pour le montage du filmcite-ref-165[165].
Ida Bechtle confie Ă Barry Warsaw la strophe « mĂȘme si, de prime abord, elle n'est pas Ă©vidente, Ă moins d'ĂȘtre NĂ©erlandais. ».
âą Brett Cannoncite-ref-zdnet2021-05-14-162-1[162] (Microsoftcite-ref-166[166], PSF, PEP 2, PEP 758, PEP 8001) Ă©voque Python pour l'atterrissage sur Mars avec un parachute. Dans l'initiation sur Python par la NASA, les enfants de 12 ans apprennent Ă coder du morsecite-ref-167[167] lors de l'atterrissage martien. Barry Warsaw fait tourner la tĂȘte Ă l'opĂ©rateur morse := du PEP 572.
⹠Guido van Rossum (CWI, CNRI, PSF, PEP 8, PEP 572, Microsoft, PEP 750cite-ref-pep-0750-142-2[142]) accepte la controverséecite-ref-168[168] PEP 572cite-ref-pep572-131-2[131]. Affecté par la rage des débats, il tire un trait sur ses activités de BDFLcite-ref-lmi2020-11-13-10-4[10] mises en pointillées par le stresscite-ref-lemonde2025-09-17-27-2[27].
Tel le pĂšre NoĂ«l de ce pittoresque cirque volant au-dessus des continents « Ă l'exception de l'Antarctique », Barry Warsaw referme la parenthĂšse du gĂ©nĂ©rateur pythoniquecite-ref-zeste2016-10-21-82-2[82] jaillissant avec peps dans lâesprit de Guido van Rossum.
Notes et références
cite-note-blogspot2009-01-11. van-rossum2009guido-van-rossum2009(en) Guido van Rossum, « The History of Python: A Brief Timeline of Python », sur blogspot, 20 janvier 2009 (consulté le 10 septembre 2025).
cite-note-wikidata-46d964ee77a14578499336e360a25db5b1b71f5d-21. van-kemenadehugo-van-kemenadeHugo van Kemenade, « Python Insider: Python 3.14.0 (final) is here! », 7 octobre 2025 (consulté le 7 octobre 2025)
cite-note-wikidata-f847463ef186429c62f89b2f30668cacf753e770-32. (en) « Python 3.14 Released With Performance Improvements, Free-Threading & Zstd », 7 octobre 2025 (consulté le 11 octobre 2025)
cite-note-wikidata-6ebc7e8f990bb4a2c7677fda314f507a16e33abd-43. (en) « Python 3.14.0 alpha 6 is out », 14 mars 2025 (consulté le 24 mars 2025)
cite-note-wikidata-bff642fdf9ab5972b1a7292dc72cb1a0e1ffc85e-54. (en) « Python 3.14.0rc3 is go! », 18 septembre 2025 (consulté le 19 septembre 2025)
cite-note-wikidata-9284980f0b3e119e4741ae3ee9b217fd2e6bdbd0-65. (en) « Python 3.14-rc3 Released Ahead Of Next Month's Official Release », 18 septembre 2025 (consulté le 19 septembre 2025)
cite-note-zdnet2021-07-26-77. tung2021liam-tung2021Liam Tung, « Python reste le langage le plus utilisé pour la data science, suivi de SQL », sur ZDNet, 26 juillet 2021 (consulté le 9 septembre 2025)
cite-note-88. â gros2015maryse-gros2015Maryse Gros, « PyData Paris prĂ©sente les projets big data rĂ©alisĂ©s avec Python », sur Le Monde informatique, 31 mars 2015 (consultĂ© le 9 septembre 2025)
cite-note-99. â ezrattyolivier-ezrattyOlivier Ezratty, « L'informatique quantique », sur MOOC Digital Paris (consultĂ© le 9 septembre 2025)
cite-note-lmi2020-11-13-1010. cheminat2020jacques-cheminat2020Jacques Cheminat, « Le créateur de Python, Guido Van Rossum, rejoint Microsoft », sur Le Monde informatique, 13 novembre 2020 (consulté le 9 septembre 2025)
cite-note-1111. â muller2018valentin-muller2018Valentin Muller, « Python : LE langage pour dĂ©buter », sur medium.org, 18 mai 2018 (consultĂ© le 5 octobre 2025)
cite-note-downeyelknermeyers20165-introducing-programming-with-python-there-are-thirteen-paragraphs-1212. â Downey, Elkner et Meyers 2016, p. 5. Introducing programming with Python: "There are thirteen paragraphs".
cite-note-tice2020-02-01-1313. 2020« La programmation Python au lycée », sur Tice-education, 1er février 2020 (consulté le 23 septembre 2025)
cite-note-1414. â douheret2025perrine-douheret2025Perrine Douheret, « La Nuit du Code : quand programmer devient une aventure ! », sur Drane, 25 septembre 2025 (consultĂ© le 25 septembre 2025)
cite-note-1515. â 2025(de) « Nuit du c0de 2025 », sur LycĂ©e Français de Berlin (Französisches Gymnasium Berlin), 2025 (consultĂ© le 27 septembre 2025)
cite-note-1616. â 2024« Retour sur la nuit du code en vidĂ©o : une magnifique Ă©dition 2024 » [« ăă€ăă»ăȘăă»ăłăŒăăźæŻăèżăăăăăȘă§èŠă: 棟性ăȘ 2024 ćčŽç »], sur LycĂ©e français international de Tokyo ăæ±äșŹćœéăă©ăłăčćŠćă,â 18 mai 2024 (consultĂ© le 27 septembre 2025)
cite-note-1717. â 2025« La semaine HOUR OF CODE » [« çŒçšäžć°æ¶ćš »], sur LycĂ©e français international Charles-de-Gaulle de PĂ©kin ăćäșŹæłćœćœé
ćŠæ Ąă,â 2025 (consultĂ© le 27 septembre 2025)
cite-note-numerama2014-12-04-1818. lausson2014julien-lausson2014Julien Lausson, « Barack Obama code pour encourager les jeunes à programmer », sur Numerama, 4 décembre 2014 (consulté le 27 septembre 2025)
cite-note-1919. â ar-ne2024v-ronique-ar-ne2024VĂ©ronique ArĂšne, « Une heure pour enseigner les bases du code Ă l'Ă©cole », sur Le Monde informatique, 4 dĂ©cembre 2024 (consultĂ© le 27 septembre 2025)
cite-note-2020. â ar-ne2025v-ronique-ar-ne2025VĂ©ronique ArĂšne, « Comcyber rĂ©organise un concours de hack Ă©tudiant dans toute la France », sur Le Monde informatique, 14 janvier 2025 (consultĂ© le 27 septembre 2025)
cite-note-2121. â charbonnier2025romain-charbonnier2025Romain Charbonnier, « Passe ton hack dâabord : le challenge pour initier les jeunes Ă la cybersĂ©curitĂ© », sur Guardia, 14 mars 2025 (consultĂ© le 25 septembre 2025)
cite-note-2222. â 2013« Programmes des classes prĂ©paratoires aux Grandes Ecoles » [PDF], sur MinistĂšre de l'Education Nationale, de l'Enseignement supĂ©rieur et de la Recherche, 2013 (consultĂ© le 3 octobre 2025), p. 5, 8
cite-note-infedu2024-2323. kohnstaub2024tobias-kohnjacqueline-staub2024(en) Tobias Kohn et Jacqueline Staub (Volume 23, Issue 4, pp. 837â868), « The Two Powers: How Pascal and Python Shaped Programming Education », sur Informatics in Education, 14 dĂ©cembre 2024 (consultĂ© le 5 octobre 2025)
cite-note-2424. â moreau2020philippe-moreau2020Philippe Moreau, « L'Informatique (vraiment) Pour Tous en classes prĂ©paratoires aux grandes Ă©coles - La programmation en Python, SQL et les algorithmes dĂ©voilĂ©s de A Ă Z : Ăvaluation 11. Partie II : Concours Mines Ponts Ă©preuve IPT 2015. », sur cairn, 2020 (consultĂ© le 3 octobre 2025) : « Le langage Ă utiliser est Python »
cite-note-2525. â damin2018walter-damin2018Walter Damin, « MathĂ©matiques 24 jours pour prĂ©parer lâoral des concours Centrale/SupĂ©lec/Mines/Ponts : Rappels autour de Python pour prĂ©parer lâoral de Math II de Centrale-SupĂ©lec », Fiches d'aide Python pour le concours Centrale-SupĂ©lec, sur cairn, 2018 (consultĂ© le 3 octobre 2025)
cite-note-inference2022-11-2626. meertens2022lambert-meertens2022(en) Lambert Meertens, « The Origins of Python », Computer Science / Review Essay Vol. 7, NO. 3, sur Inference, novembre 2022 (consulté le 5 octobre 2025)
cite-note-lemonde2025-09-17-2727. leloup2018damien-leloup2018Damien Leloup, « Je nâimaginais pas que le langage informatique Python connaĂźtrait un tel succĂšs », sur Le Monde, 25 juillet 2018 (consultĂ© le 17 septembre 2025)
cite-note-faq1-2-2828. van-rossum1991guido-van-rossum1991(en) Guido van Rossum, « Why was Python created in the first place? », sur python.org, février 1991 (consulté le 18 septembre 2025)
cite-note-2929. â jansen1989jack-jansen1989(en) Jack Jansen, « Introduction to MacPython », sur CWI, 1989 (consultĂ© le 26 septembre 2025) : « the very first implementation was actually done on a Macintosh »
cite-note-lutz200917-3030. Lutz 2009, p. 17.
cite-note-lutz2006xix-3131. Lutz 2006, p. XIX.
cite-note-alt1991-02-19-3232. van-rossum2025guido-van-rossum2025(en) Guido van Rossum, « Python 0.9.1 part 01/21 », sur alt.sources, 2025 (consulté le 4 octobre 2025)
cite-note-3333. â van-rossum1991guido-van-rossum1991(en) Guido van Rossum, « Release 0.9.0 (February 1991) », sur python.org, 19 fĂ©vrier 1991 (consultĂ© le 4 octobre 2025)
cite-note-3434. â dalke2025andrew-dalke2025(en) Andrew Dalke, « Ancient Releases », sur python.org, 2025 (consultĂ© le 4 octobre 2025)
cite-note-cnri-grail-3535. 2020(en) « Grail Internet Browser », sur CNRI, 7 décembre 2020 (consulté le 16 septembre 2025)
cite-note-python1999-07-idle-3737. (en) « Computer Programming for Everybody », sur Python.org (consulté le 14 août 2020).
cite-note-python2000-10-16new-3838. kuchlingzadka2000a-m-kuchlingmoshe-zadka2000(en) A.M. Kuchling et Moshe Zadka, « What's New in Python 2.0 », sur archive.org, 16 octobre 2000 (consulté le 12 septembre 2025)
cite-note-python2010new-3939. kuchling2010a-m-kuchling2010(en) A.M. Kuchling, « What's New in Python 2.7 », sur python.org, 2010 (consulté le 12 septembre 2025)
cite-note-4040. â kuchling1999andrew-m-kuchling1999(en) Andrew M. Kuchling, « Python Warts », sur python.org, 22 dĂ©cembre 1999 (consultĂ© le 23 septembre 2025)
cite-note-4141. â van-rossum2003guido-van-rossum2003(en) Guido van Rossum, « Unifying types and classes in Python 2.2 », sur python.org, 30 mai 2003 (consultĂ© le 26 septembre 2025)
cite-note-4242. â 2001(en) « History of the software », sur python.org, 2001 (consultĂ© le 27 septembre 2025)
cite-note-4343. â van-rossum2025guido-van-rossum2025(en) Guido van Rossum, « The Rietveld server on App Engine », sur github, 1er mars 2025 (consultĂ© le 27 septembre 2025)
cite-note-python2009-02-14new-4444. van-rossum2009guido-van-rossum2009(en) Guido van Rossum, « What's New in Python 3.0 », sur python.org, 14 février 2009 (consulté le 12 septembre 2025)
cite-note-python2012-04-09new-4545. hettinger2012raymond-hettinger2012(en) Raymond Hettinger, « What's New in Python 3.1 », sur python.org, 9 avril 2012 (consulté le 12 septembre 2025)
cite-note-4646. â houston2012drew-houston2012(en) Drew Houston, « Welcome Guido! », sur dropbox, 7 dĂ©cembre 2012 (consultĂ© le 27 septembre 2025)
cite-note-mypy-4747. sadhwani2021tushar-sadhwani2021(en) Tushar Sadhwani, « The Comprehensive Guide to mypy », sur medium.com, 6 mai 2021 (consulté le 15 septembre 2025)
cite-note-4848. â 2019(en) « Thank you, Guido », sur dropbox, 29 octobre 2019 (consultĂ© le 27 septembre 2025)
cite-note-4949. â « Python est le langage de programmation le plus utilisĂ© et il ne montre aucun signe de ralentissement, selon l'index TIOBE de janvier 2022 », sur Developpez.com (consultĂ© le 30 septembre 2023)
cite-note-5050. â krill2025paul-krill2025Paul Krill ((en) Infoworld. AdaptĂ© par Louise Costa), « PoussĂ©e par l'IA, la popularitĂ© de Python ne faiblit pas », sur Le Monde informatique, 6 aoĂ»t 2025 (consultĂ© le 9 septembre 2025)
cite-note-swinnen201225-26-5151. â Swinnen 2012, p. 25-26.
cite-note-swinnen201223-26-5252. â Swinnen 2012, p. 23-26.
cite-note-pep8-5353. van-rossumwarsawcoghlan2013guido-van-rossumbarry-warsawalyssa-coghlan2013(en) Guido van Rossum, Barry Warsaw et Alyssa Coghlan, « PEP 8 - Style Guide for Python Code », sur Python.org, 1er août 2013 (consulté le 11 septembre 2025).
cite-note-pep-0308-5454. van-rossumhettinger2003guido-van-rossumraymond-hettinger2003(en) Guido van Rossum et Raymond Hettinger, « PEP 308 â Conditional Expressions », sur python.org, 7 fĂ©vrier 2003 (consultĂ© le 1er octobre 2025)
cite-note-5555. â 2025(en) « keyword --- Testing for Python keywords » [« Tester si des chaĂźnes sont des mot-clĂ©s Python »], sur python.org, 2025 (consultĂ© le 1er octobre 2025)
cite-note-5656. â 2025« Fonctions natives », sur python.org, 2025 (consultĂ© le 1er octobre 2025)
cite-note-5757. â (en) « Python 3.0 - Core Language Changes ».
cite-note-5858. â (en) « PEP 3104 - Access to Names in Outer Scopes ».
cite-note-5959. â collartthomas-collartThomas Collart, « La fonction enumerate en Python », sur Comment coder (consultĂ© le 12 fĂ©vrier 2025)
cite-note-6060. â schemenauervan-rossum2006neil-schemenauerguido-van-rossum2006(en) Neil Schemenauer et Guido van Rossum (Les objets bytes ont Ă©tĂ© introduits par le PEP 358), « PEP 358 â The âbytesâ Object », sur python.org, 15 fĂ©vrier 2006 (consultĂ© le 1er octobre 2025)
cite-note-pep-3137-6161. van-rossum2007guido-van-rossum2007(en) Guido van Rossum, « PEP 3137 â Immutable Bytes and Mutable Buffer », sur python.org, 26 septembre 2007 (consultĂ© le 1er octobre 2025)
cite-note-6262. â (en) « collections â Container datatypes », sur Python documentation (consultĂ© le 14 fĂ©vrier 2025)
cite-note-6363. â (en) « typing â Support for type hints », sur Python documentation (consultĂ© le 14 fĂ©vrier 2025)
cite-note-pep-0202-6464. warsaw2000barry-warsaw2000(en) Barry Warsaw (Les comprĂ©hensions ont Ă©tĂ© introduites dans le PEP 202), « PEP 202 â List Comprehensions », sur python.org, 13 juillet 2000 (consultĂ© le 1er octobre 2025)
cite-note-6565. â warsaw2001barry-warsaw2001(en) Barry Warsaw (les comprĂ©hensions de dictionnaires et d'ensembles dans le PEP 274), « PEP 274 â Dict Comprehensions », sur python.org, 25 octobre 2001 (consultĂ© le 1er octobre 2025)
cite-note-6666. â 2025« 3. Data model : 3.3. Special method names », sur python.org, 2025 (consultĂ© le 27 septembre 2025)
cite-note-pep-0380-6767. ewing2009gregory-ewing2009(en) Gregory Ewing, « PEP 380 â Syntax for Delegating to a Subgenerator », sur python.org, 13 fĂ©vrier 2009 (consultĂ© le 2 octobre 2025)
cite-note-686. 2025(en) « Diversity », sur pycon.org, 2025 (consulté le 7 octobre 2025)
cite-note-697. abid2016hassan-abid2016(en) Hassan Abid, « Respect,Diversity with Pythonists and Djangonauts » [« ìĄŽì€ ë€ìì± Â»], sur medium.com,â 18 aoĂ»t 2016 (consultĂ© le 7 octobre 2025)
cite-note-708. noisette2025thierry-noisette2025Thierry Noisette, « La fondation Python renonce Ă une subvention de 1,5 million de dollars plutĂŽt quâĂ ses valeurs », sur zdnet, 30 octobre 2025 (consultĂ© le 30 octobre 2025)
cite-note-swinnen201216-17-76-81-125-146-7171. â Swinnen 2012, p. 16-17, 76, 81, 125, 146.
cite-note-7272. â 2025(en) « traits 7.0.2 : Observable typed attributes for Python classes », sur Python Package Index, 24 janvier 2025 (consultĂ© le 2 octobre 2025)
cite-note-7373. â (en) « PEP 3107 -- Function Annotations », sur Python.org (consultĂ© le 4 mars 2020).
cite-note-7474. â winterlownds2006collin-wintertony-lownds2006(en) Collin Winter et Tony Lownds, « Fundamentals of Function Annotations », sur www.python.org, 6 dĂ©cembre 2006 (consultĂ© le 10 mars 2020).
cite-note-7575. â « 26.1. typing â Support for type hints â Python 3.6.10 documentation », sur docs.python.org (consultĂ© le 4 mars 2020).
cite-note-7676. â (en) « PEP 484 -- Type Hints », sur Python.org (consultĂ© le 4 mars 2020).
cite-note-7777. â adkens2020stan-adkens2020Stan Adkens, « Microsoft dĂ©voile Pylance, sa nouvelle extension Python pour Visual Studio Code », sur developpez.com, 6 juillet 2020 (consultĂ© le 15 septembre 2025)
cite-note-cnrs2023-10-18-7878. l-orphelin2023cyril-l-orphelin2023Cyril L'Orphelin, « Outils d'analyse et de mesure de la qualité du code », sur CNRS Actions Nationales de Formation, 18 octobre 2023 (consulté le 15 septembre 2025)
cite-note-7979. â pykes2024kurtis-pykes2024Kurtis Pykes, « Deux mĂ©thodes simples pour convertir un fichier Python en fichier Exe », sur datacamp, 4 octobre 2024 (consultĂ© le 23 septembre 2025)
cite-note-dive2011-8080. pilgrim2011mark-pilgrim2011(en) Mark Pilgrim, « Your First Python Program : 1.5 Everything Is An Object » [« Plongez au coeur de Python »], sur Dive Into Python 3, 2011 (consulté le 4 octobre 2025)
cite-note-8181. â 2025(en) « Why must âselfâ be used explicitly in method definitions and calls? », sur python.org, 2025 (consultĂ© le 2 octobre 2025)
cite-note-zeste2016-10-21-8282. entwanne2016entwanne, « Les secrets d'un code pythonique », sur Zeste de Savoir, 21 octobre 2016 (consulté le 21 septembre 2025)
cite-note-8383. â barrettcasselshaahrmoon1996kim-barrettbob-casselspaul-haahrdavid-a-moon1996Kim Barrett, Bob Cassels, Paul Haahr, David A. Moon, Keith Playford et P. Tucker Withington, « A monotonic superclass linearization for Dylan », ACM SIGPLAN Notices, vol. 31, no 10,â octobre 1996, p. 69-82 (DOI 10.1145/236337.236343, lire en ligne).
cite-note-8484. â simionato2005michele-simionato2005(en) Michele Simionato, « The Python 2.3 Method Resolution Order », sur python.org, 8 fĂ©vrier 2005 (consultĂ© le 2 octobre 2025)
cite-note-google-pyguide-8585. 2025(en) « Google Python Style Guide », sur github, 2025 (consulté le 16 septembre 2025)
cite-note-swinnen201279-105-8686. â Swinnen 2012, p. 79-105.
cite-note-8787. â mcfarlane2000greg-mcfarlane2000(en) Greg McFarlane, « Getting started with Pmw », sur Stanford National Accelerator Laboratory, 12 mai 2000 (consultĂ© le 2 octobre 2025)
cite-note-medium2018-11-13-8888. beraud2018herv-beraud2018(en) Hervé Beraud, « Python after Guido BDFL, the future of the governance of python », sur medium.com, 13 novembre 2018 (consulté le 21 septembre 2025)
cite-note-8989. â (en) « [python-committers] Transfer of power », sur www.mail-archive.com (consultĂ© le 19 octobre 2020).
cite-note-9090. â 2019(en-US) « Steering Council nomination: Guido van Rossum (2020 term) », sur Discussions on Python.org, 27 novembre 2019 (consultĂ© le 19 octobre 2020).
cite-note-9191. â 2025« 1. Mise en bouche », sur python.org, 2025 (consultĂ© le 24 septembre 2025) : « Faire rĂ©fĂ©rence aux sketchs des Monty Python dans la documentation n'est pas seulement permis, c'est encouragĂ© ! »
cite-note-9292. â watters1995aaron-watters1995(en) Aaron Watters, « Legal Issues », sur python.org, 30 mars 1995 (consultĂ© le 24 septembre 2025)
cite-note-9393. â barnettelevinebarrett2025martha-barnettestefanie-levinegrant-barrett2025(en) Martha Barnette, Stefanie Levine et Grant Barrett, « Newsletter: Lobster Thermidor Aux Crevettes With a Mornay Sauce, Garnished With Truffle PĂątĂ©, Brandy, and a Fried Egg on Top, and Spam », sur A Way with Words, 26 juillet 2025 (consultĂ© le 24 septembre 2025)
cite-note-9494. â van-rossumhettinger2025guido-van-rossumraymond-hettinger2025(en) Guido van Rossum et Raymond Hettinger (from C source provided by Adrian Baddeley), « random â Generate pseudo-random numbers », sur python.org, 21 fĂ©vrier 2025 (consultĂ© le 24 septembre 2025)
cite-note-9595. â 2025(en) « Quotes about Python », sur python.org, 2025 (consultĂ© le 2 octobre 2025)
cite-note-9696. â chausson2012cyrille-chausson2012Cyrille Chausson, « Guido van Rossum, le pĂšre de Python, passe de Google Ă Dropbox », sur LeMagIT, 11 dĂ©cembre 2012 (consultĂ© le 9 septembre 2025)
cite-note-stack2017-06-14-9797. gienow2017michelle-gienow2017(en) Michelle Gienow, « Instagram Makes a Smooth Move to Python 3 », sur The New Stack, 14 juin 2017 (consulté le 20 septembre 2025)
cite-note-nasa024-06-21-9898. chang2024sherry-chang2024(en) Sherry Chang, « Using the Intel Distribution for Python », sur NASA, 21 juin 2024 (consulté le 10 septembre 2025)
cite-note-zdnet2002-07-04-9999. shafer2002daniel-g-shafer2002(en) Daniel G. Shafer, « Space shuttle engineers use Python to streamline mission design », sur ZDNet, 4 juillet 2002 (consulté le 21 septembre 2025)
cite-note-100100. â 2018(en) « Python for ArcGIS », sur arcgis, 23 janvier 2018 (consultĂ© le 2 octobre 2025)
cite-note-101101. â « PythonImplementations - Python Wiki », sur wiki.python.org (consultĂ© le 18 septembre 2023)
cite-note-102102. â « Brython », sur brython.info (consultĂ© le 21 mars 2021).
cite-note-103103. â « shedskin » [archive du 16 juin 2013], sur google (consultĂ© le 6 octobre 2025)
cite-note-104104. â woutersyasskinwinterthomas-woutersjeffrey-yasskincollin-winterThomas Wouters, Jeffrey Yasskin et Collin Winter, « unladen-swallow » [archive du 20 octobre 2009], sur google (consultĂ© le 6 octobre 2025)
cite-note-105105. â bouwmanlyu2025windel-bouwmanshing-lyu2025(en) Windel Bouwman et Shing Lyu, « RustPython: A Python Interpreter written in Rust », sur github, 29 septembre 2025 (consultĂ© le 6 octobre 2025)
cite-note-106106. â 2022(en) « BeginnersGuide : Downloading Python », sur python.org, 4 novembre 2022 (consultĂ© le 10 septembre 2025)
cite-note-swinnen2012x-381-107107. â Swinnen 2012, p. X, 381.
cite-note-108108. â coombes2014james-coombes2014(en) James Coombes, « Enthought Python Canopy Express », sur UniversitĂ© du Texas Ă Austin, 15 aoĂ»t 2014 (consultĂ© le 10 septembre 2025)
cite-note-fuchspoulain2024383-109109. Fuchs et Poulain 2024, p. 383.
cite-note-cordeaupointal2025xiv-6-110110. â Cordeau et Pointal 2025, p. xiv, 6.
cite-note-111111. â validire2014romain-validire2014Romain Validire, « Installation WinPython », sur LycĂ©e Bertran de Born, 3 avril 2014 (consultĂ© le 10 septembre 2025)
cite-note-112112. â 2000(en) « PEP 0 â Index of Python Enhancement Proposals (PEPs) », sur python.org, 13 juillet 2000 (consultĂ© le 3 octobre 2025)
cite-note-1139. 1999(en) « What's New in Python 1.5 », sur python.org, 13 avril 1999 (consulté le 12 septembre 2025)
cite-note-11410. 2000(en) « What's New in Python 1.6 », sur python.org, 5 septembre 2000 (consulté le 12 septembre 2025)
cite-note-11511. kuchling2000a-m-kuchling2000(en) A.M. Kuchling, « What's New in Python 2.1 », sur archive.org, 16 octobre 2000 (consulté le 12 septembre 2025)
cite-note-11612. 2025« Licence de Python, versions 2.0.1, 2.1.1 et suivantes », sur gnu.org, 13 août 2025 (consulté le 12 septembre 2025)
cite-note-11713. kuchling2003a-m-kuchling2003(en) A.M. Kuchling, « What's New in Python 2.2 », sur python.org, 30 mai 2003 (consulté le 12 septembre 2025)
cite-note-11814. kuchling2005a-m-kuchling2005(en) A.M. Kuchling, « What's New in Python 2.3 », sur python.org, 8 février 2005 (consulté le 12 septembre 2025)
cite-note-11915. kuchling2004a-m-kuchling2004(en) A.M. Kuchling, « What's New in Python 2.4 », sur python.org, 2004 (consulté le 12 septembre 2025)
cite-note-12016. kuchling2006a-m-kuchling2006(en) A.M. Kuchling, « What's New in Python 2.5 », sur python.org, 2006 (consulté le 12 septembre 2025)
cite-note-12117. kuchling2013a-m-kuchling2013(en) A.M. Kuchling, « What's New in Python 2.6 », sur python.org, 29 octobre 2013 (consulté le 12 septembre 2025)
cite-note-12218. hettinger2014raymond-hettinger2014(en) Raymond Hettinger, « What's New in Python 3.2 », sur python.org, 12 avril 2014 (consulté le 12 septembre 2025)
cite-note-12319. 2012(en) « What's New in Python 3.3 », sur python.org, 29 septembre 2012 (consulté le 12 septembre 2025)
cite-note-12420. murray2014r-david-murray2014(en) R. David Murray, « What's New in Python 3.4 », sur python.org, 16 mars 2014 (consulté le 12 septembre 2025)
cite-note-12521. pranskevichus2015elvis-pranskevichus2015(en) Elvis Pranskevichus, « What's New in Python 3.5 », sur python.org, 13 septembre 2015 (consulté le 12 septembre 2025)
cite-note-12622. pranskevichusselivanov2016elvis-pranskevichusyury-selivanov2016(en) Elvis Pranskevichus et Yury Selivanov, « What's New in Python 3.6 », sur python.org, 23 décembre 2016 (consulté le 12 septembre 2025)
cite-note-fuchspoulain202426-12723. Fuchs et Poulain 2024, p. 26.
cite-note-12824. pranskevichus2018elvis-pranskevichus2018(en) Elvis Pranskevichus, « What's New in Python 3.7 », sur python.org, 27 juin 2018 (consulté le 12 septembre 2025)
cite-note-fuchspoulain202467-12925. Fuchs et Poulain 2024, p. 67.
cite-note-13026. hettinger2019raymond-hettinger2019Raymond Hettinger, « Les nouveautés de Python 3.8 », sur python.org, 14 octobre 2019 (consulté le 12 septembre 2025)
cite-note-pep572-131131. angelicopetersvan-rossum2018chris-angelicotim-petersguido-van-rossum2018(en) Chris Angelico, Tim Peters et Guido van Rossum, « PEP 572 â Assignment Expressions », sur python.org, 28 fĂ©vrier 2018 (consultĂ© le 21 septembre 2025)
cite-note-13227. langa2025ukasz-langa2025Ćukasz Langa, « Les nouveautĂ©s de Python 3.9 », sur python.org, 8 juillet 2025 (consultĂ© le 12 septembre 2025)
cite-note-13328. fassinou2020bill-fassinou2020Bill Fassinou, « Toutes les versions de Python inférieures à 3.6 sont maintenant en fin de vie », sur developpez, 15 septembre 2020 (consulté le 12 septembre 2025)
cite-note-13429. galindo-salgado2025pablo-galindo-salgado2025Pablo Galindo Salgado, « Les nouveautés de Python 3.10 », sur python.org, 8 juillet 2025 (consulté le 12 septembre 2025)
cite-note-fuchspoulain202416-13530. Fuchs et Poulain 2024, p. 16.
cite-note-13631. galindo-salgado2022pablo-galindo-salgado2022Pablo Galindo Salgado, « Les nouveautés de Python 3.11 », sur python.org, 24 octobre 2022 (consulté le 12 septembre 2025)
cite-note-fuchspoulain202410-13732. Fuchs et Poulain 2024, p. 10.
cite-note-13833. turner2023adam-turner2023(en) Adam Turner (trad. Jade Emy), « What's New in Python 3.12 », sur python.org, 2 octobre 2023 (consulté le 12 septembre 2025)
cite-note-13934. turnerwouters2024adam-turnerthomas-wouters2024(en) Adam Turner et Thomas Wouters, « What's New in Python 3.13 », sur python.org, 7 octobre 2024 (consulté le 12 septembre 2025)
cite-note-14035. turnervan-kemenade2025adam-turnerhugo-van-kemenade2025(en) Adam Turner et Hugo van Kemenade, « What's New in Python 3.14 », sur python.org, 7 octobre 2025 (consulté le 7 octobre 2025)
cite-note-14136. mayuresh2025k-mayuresh2025(en) K Mayuresh, « Python 3.14: Seven Cool New Features You Should Know », sur medium.com, 11 juin 2025 (consulté le 6 octobre 2025)
cite-note-pep-0750-142142. bakervan-rossumeverittaono2025jim-bakerguido-van-rossumpaul-everittkoudai-aono2025(en) Jim Baker, Guido van Rossum, Paul Everitt, Koudai Aono, Lysandros Nikolaou et Dave Peck, « PEP 750 â Template Strings », sur python.org, 10 avril 2025 (consultĂ© le 7 octobre 2025)
cite-note-14337. 2025(en) « What's New in Python 3.15 », sur python.org, 2025 (consulté le 11 octobre 2025)
cite-note-144144. â van-rossum2025guido-van-rossum2025(en) Guido van Rossum, « Python 3000 released as 3.0a1 », sur comp.lang.python, 2025 (consultĂ© le 3 octobre 2025)
cite-note-pep-3000-145145. van-rossum2006guido-van-rossum2006(en) Guido van Rossum, « PEP 3000 â Python 3000 », sur python.org, 5 avril 2006 (consultĂ© le 3 octobre 2025)
cite-note-146146. â wichmann2020mats-wichmann2020(en) Mats Wichmann, « Should I use Python 2 or Python 3 for my development activity? », sur python.org, 17 juin 2020 (consultĂ© le 3 octobre 2025)
cite-note-147147. â ruby2007sam-ruby2007(en) Sam Ruby, « 2to3 », sur intertwingly, 1er septembre 2007 (consultĂ© le 22 septembre 2025)
cite-note-148148. â norwitzwarsaw2006neal-norwitzbarry-warsaw2006(en) Neal Norwitz et Barry Warsaw, « PEP 361 â Python 2.6 and 3.0 Release Schedule », sur python.org, 29 juin 2006 (consultĂ© le 22 septembre 2025)
cite-note-149149. â 2025(en) « 6. Using Python on Android », sur python.org, 2025 (consultĂ© le 22 septembre 2025) : « Buildozer, from the Kivy project »
cite-note-150150. â 2025(en) « 7. Using Python on iOS », sur python.org, 2025 (consultĂ© le 22 septembre 2025)
cite-note-151151. â 2019(en) « blackberry/Python », sur github, 4 septembre 2019 (consultĂ© le 22 septembre 2025) : « This repository was archived by the owner on Sep 4, 2019. »
cite-note-stack2025-08-25-153153. cassel2025david-cassel2025(en) David Cassel, « Guido van Rossum Revisits Pythonâs Life in a New Documentary », sur The New Stack, 25 aoĂ»t 2025 (consultĂ© le 20 septembre 2025)
cite-note-154154. â 2025(en) « Python: the Documentary - Premiere », sur pycon.gr, 28 aoĂ»t 2025 (consultĂ© le 20 septembre 2025)
cite-note-realpython2025-09-20-155155. â acsany2025philipp-acsany2025(en) Philipp Acsany, « The Python Documentary Celebrates History While Developer Surveys Celebrate Python », sur Real Python, 8 septembre 2025 (consultĂ© le 20 septembre 2025)
cite-note-156156. â eleftherakou2022olga-eleftherakou2022(en) Olga Eleftherakou (Îλγα ÎλΔÏ
ΞΔÏÎŹÎșÎżÏ
), « Statistical Analysis for Womenâs Rights in Python : Code Like A Girl » [« YaY! ÎŁÏαÏÎčÏÏÎčÎșÎź ÎÎœÎŹÎ»Ï
Ïη ÎłÎčα Ïα ÎÎčÎșαÎčÏΌαÏα ÏÏΜ ÎÏ
ΜαÎčÎșÏΜ ÏΔ Python »], sur medium.com,â 30 avril 2022 (consultĂ© le 6 octobre 2025)
cite-note-157157. â dennis2025yancy-dennis2025(en) Yancy Dennis, « The Rise of PyLadies: Empowering Women in Python », sur Medium, 7 mars 2025 (consultĂ© le 6 octobre 2025)
cite-note-158158. â wongmesawijaya2020elaine-wonglorena-mesamariatta-wijaya2020(en) Elaine Wong, Lorena Mesa et Mariatta Wijaya, « 9 Years of PyLadies: Lessons Learned and What Comes Next », sur PyCascades, 7 fĂ©vrier 2020 (consultĂ© le 20 septembre 2025)
cite-note-159159. â 2014(en) « Current and Past PSF Officers & Board Members », sur python.org, 2014 (consultĂ© le 20 septembre 2025)
cite-note-160160. â 2025(en) « Lisa Roach », sur Women Talk Design, 2025 (consultĂ© le 20 septembre 2025)
cite-note-medium2020-03-02-161161. omprakash2020arpit-omprakash2020(en) Arpit Omprakash, « Are you a Pythonista? », sur medium.com, 2 mars 2020 (consulté le 20 septembre 2025)
cite-note-zdnet2021-05-14-162162. tung2021liam-tung2021(en) Liam Tung, « Python programming: We want to make the language twice as fast, says its creator », sur ZDNet, 14 mai 2021 (consulté le 21 septembre 2025)
cite-note-163163. â van-rossum2008guido-van-rossum2008(en) Guido van Rossum, « Origin of BDFL : All Things Pythonic », sur artima, 31 juillet 2008 (consultĂ© le 27 septembre 2025)
cite-note-164164. â peters2004tim-peters2004(en) Tim Peters, « PEP 20 â The Zen of Python », sur python.org, 19 aoĂ»t 2004 (consultĂ© le 5 octobre 2025)
cite-note-165165. â peters2025tim-peters2025(en) Tim Peters, « Python documentary going live this Thursday, August 28 », sur python.org, 26 aoĂ»t 2025 (consultĂ© le 5 octobre 2025)
cite-note-166166. â 2023(en) « Staying for Python's Community: An Interview with Brett Cannon PyCon 2023 », sur Microsoft, 2023 (consultĂ© le 21 septembre 2025)
cite-note-167167. â orr2025kim-orr2025(en) Kim Orr, « Code a Mars Landing », sur NASA, 2025 (consultĂ© le 21 septembre 2025) : « Morse_Dict = { 'A':'.-', 'B':'-...', 'C':'-.-.' »
cite-note-168168. â ingram2019dustin-ingram2019(en) Dustin Ingram (PyCon Cleveland 4 mai 2019), « PEP 572: The Walrus Operator », sur dustingram.com, 4 avril 2019 (consultĂ© le 21 septembre 2025)
cite-note-169169. â ramel2022david-ramel2022(en) David Ramel (Steve Dower Ă EuroPython, Dublin 2022), « VS Code and Python: A Natural Fit for Data Science », sur Visual Studio Magazine, 7 dĂ©cembre 2022 (consultĂ© le 21 septembre 2025) : « Tales of Python Security »
Voir aussi
Bibliographie
⹠swinnen2012g-rard-swinnen2012Gérard Swinnen, Apprendre à programmer avec Python 3, Eyrolles, coll. « Noire », 2 février 2012, 3e éd., 436 p. (ISBN 978-2-212-13434-6, lire en ligne).
⹠downeyelknermeyers2016allen-b-downeyjeffrey-elknerchris-meyers2016(en) Allen B. Downey, Jeffrey Elkner et Chris Meyers (préf. Jeffrey Elkner), How to Think like a Computer Scientist: Learning with Python [« Pensez en Python »], O'Reilly, 2016, 2e éd. (ISBN 978-1-0981-5543-8, lire en ligne). :« Il faut treize paragraphes pour expliquer un Hello, World! en C++, seulement deux en Python »
⹠lutz2009mark-lutz2009(en) Mark Lutz, Learning Python : Powerful Object-Oriented Programming, O'Reilly, 2009, 4e éd. (ISBN 978-1-4493-7932-2, lire en ligne).
âą fuchspoulain2024patrick-fuchspierre-poulain2024Patrick Fuchs et Pierre Poulain, Programmation en Python pour les sciences de la vie, Dunod, 2024, 320 p. (ISBN 978-2-1008-6411-9, lire en ligne).
âą ramalho2019luciano-ramalho2019Luciano Ramalho (trad. Daniel RougĂ©), Programmer en Python : Apprendre la programmation de façon claire, concise et efficace [« Fluent Python: Clear, concise and effective programming. Ăd. O'Reilly »], Ăditions First, 2019 (ISBN 978-2-4120-4716-3).
⹠lutz2006mark-lutz2006(en) Mark Lutz (préf. Guido Van Rossum), Programming Python : Powerful Object-Oriented Programming, O'Reilly, 23 août 2006, 3e éd. (ISBN 978-0-5965-5461-3, lire en ligne).
⹠cordeaupointal2025bob-cordeaulaurent-pointal2025Bob Cordeau et Laurent Pointal (préf. Gérard Swinnen), Python 3 : apprendre à programmer dans l'écosystÚme Python, Dunod, 2025, 240 p. (ISBN 978-2-1008-7612-9, lire en ligne).
âą hellmann2017doug-hellmann2017(en) Doug Hellmann, The Python Standard Library by Example, Addison-Wesley, 2017.
Liste des principaux frameworks
1. Base de données
âą Mapping objet-relationnel (ORM) : SQLObject, SQLAlchemy, Storm, Django ORM
⹠SystÚme de gestion de base de données : PyGresQL, Psycopg, mysql-connector-python
2. BibliothĂšques scientifiques
âą Visualisation : pydot, Matplotlib, pyngl, MayaVi
âą Simulation : simPy
âą Biologie : Biopython
3. Intelligence artificielle
⹠SystÚme expert : pyCLIPS, pyswip, pyDatalog, pyKE (« Python Knowledge Engine »)
4. Outils
âą Utilitaire : eGenix, ctype, Askbot
⹠Analyseur syntaxique : PyParsing, PLY (« Python Lex & Yacc »)
5. Protocoles
âą pyTango
⹠Sérialisation : SimpleJSON
6. Traitement d'image
⹠SystÚme d'information géographique : TileCache, FeatureServer, Cartoweb 4, Shapely, GeoDjango, PCL
âą Vecteur : GeoJSON, OWSLib, Quadtree, Rtree, Shapely, WorldMill, ZCO
7. Web
Articles connexes
⹠Cython : langage permettant d'écrire des modules compilables pour Python.
âą IPython : terminal interactif.
⹠RUR-PLE : outil éducatif pour apprendre le Python de façon ludique en pilotant un robot virtuel.
⹠PyPI : dépÎt tiers officiel.
âą Portail de lâinformatique
âą Portail des logiciels libres
âą Portail de la programmation informatique